
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
 */
package itm.bo.grupoInvestigacion;

//~--- non-JDK imports --------------------------------------------------------

import itm.conexion.SQLServerConection;

import itm.dao.grupoInvestigacion.GrupoInvestigacionDAO;

import itm.exception.ControlException;

import itm.vo.file.ArchivoVO;
import itm.vo.grupoInvestigacion.CiudadVO;
import itm.vo.grupoInvestigacion.EventoPersonaGrupoVO;
import itm.vo.grupoInvestigacion.EventoVO;
import itm.vo.grupoInvestigacion.GrupoInvestigacionVO;
import itm.vo.grupoInvestigacion.PaisVO;
import itm.vo.grupoInvestigacion.RolVO;
import itm.vo.personas.PersonaVO;

//~--- JDK imports ------------------------------------------------------------

import java.sql.Connection;
import java.sql.SQLException;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

/**
 *
 * @author Administrador
 */
public class GrupoInvestigacionBO {
    SQLServerConection    conexion = new SQLServerConection();
    Connection            dbConexion;
    GrupoInvestigacionDAO grupoInvDAO;

    public GrupoInvestigacionVO consultarGrupoPK(GrupoInvestigacionVO grupoInvVO) throws Exception {
        GrupoInvestigacionVO grupoInvVO2 = new GrupoInvestigacionVO();

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            grupoInvVO2 = grupoInvDAO.consultarGrupoPK(grupoInvVO);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return grupoInvVO2;
    }

    public int crearEvento(EventoVO eventoVO) throws Exception {
        int resultado = 0;

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.crearEvento(eventoVO);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    // public GrupoInvestigacionBO(){}

    public int crearGrupoInv(GrupoInvestigacionVO grupoVO) throws Exception {
        int resultado = 0;

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.crearGrupoInv(grupoVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int guardarArchivoEvento(ArchivoVO archivoVO) throws Exception {
        int resultado = 0;

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.guardarArchivoEvento(archivoVO);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String insertarParticipantes(EventoPersonaGrupoVO eventoPersonaGrupoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.insertarParticipantes(eventoPersonaGrupoVO);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public List<GrupoInvestigacionVO> listarGrupos() throws Exception {
        List<GrupoInvestigacionVO> listaGrupo = new ArrayList<GrupoInvestigacionVO>();

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            listaGrupo  = grupoInvDAO.listarGrupoInv();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaGrupo;
    }

    public List<PersonaVO> listarPersonasByGrupoPK(GrupoInvestigacionVO grupoInvVO) throws Exception {
        List<PersonaVO> listaPersonas = new ArrayList<PersonaVO>();

        try {
            dbConexion    = conexion.openConnection();
            grupoInvDAO   = new GrupoInvestigacionDAO(dbConexion);
            listaPersonas = grupoInvDAO.listarPersonasByGrupoPK(grupoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaPersonas;
    }

    public List<CiudadVO> listarCiudadesByPais(PaisVO paisVO) throws Exception {
        List<CiudadVO> listaCiudades = new ArrayList<CiudadVO>();

        try {
            dbConexion    = conexion.openConnection();
            grupoInvDAO   = new GrupoInvestigacionDAO(dbConexion);
            listaCiudades = grupoInvDAO.listarCiudadesByPais(paisVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaCiudades;
    }

    public String modificarGrupoInv(GrupoInvestigacionVO grupoVO) throws ControlException {
        String resultado = "";

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.modificarGrupoInv(grupoVO);

            // return resultado;
        } catch (Exception sq) {
            sq.getStackTrace();

            // return resultado;
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String eliminarGrupoInv(GrupoInvestigacionVO grupoVO) throws Exception {
        String resultado = "";

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.eliminarGrupoInv(grupoVO);

            return resultado;
        } catch (Exception sq) {
            sq.getStackTrace();

            return resultado;
        } finally {
            conexion.closeConnection(dbConexion);
        }
    }

    public List<GrupoInvestigacionVO> consultarGrupoInv(GrupoInvestigacionVO grupoVO) throws ControlException {
        List<GrupoInvestigacionVO> listaGrupo = new ArrayList<GrupoInvestigacionVO>();

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            listaGrupo  = grupoInvDAO.consultarGrupoInv(grupoVO);
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaGrupo;
    }

    public List<PersonaVO> listarPersonas() throws Exception {
        List<PersonaVO> listapersonas = new ArrayList<PersonaVO>();

        try {
            dbConexion    = conexion.openConnection();
            grupoInvDAO   = new GrupoInvestigacionDAO(dbConexion);
            listapersonas = grupoInvDAO.listarPersonas();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listapersonas;
    }

    public List<RolVO> listarRoles() throws Exception {
        List<RolVO> listaRoles = new ArrayList<RolVO>();

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            listaRoles  = grupoInvDAO.listarRoles();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaRoles;
    }

    public String insertarGrupoPersonaRol(GrupoInvestigacionVO grupoInvVO, PersonaVO personaVO, RolVO rolVO)
            throws Exception {
        String resultado = "";

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.insertarGrupoPersonaRol(grupoInvVO, personaVO, rolVO);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public List<PersonaVO> listarPersonaGrupo(GrupoInvestigacionVO grupoInvVO) throws Exception {
        List<PersonaVO> listapersonasGrupo = new ArrayList<PersonaVO>();

        try {
            dbConexion         = conexion.openConnection();
            grupoInvDAO        = new GrupoInvestigacionDAO(dbConexion);
            listapersonasGrupo = grupoInvDAO.listarPersonaGrupo(grupoInvVO);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listapersonasGrupo;
    }

    public String eliminarPeronaGrupo(GrupoInvestigacionVO grupoVO, PersonaVO personaVO) throws Exception {
        String resultado = "";

        try {
            dbConexion  = conexion.openConnection();
            grupoInvDAO = new GrupoInvestigacionDAO(dbConexion);
            resultado   = grupoInvDAO.eliminarPeronaGrupo(grupoVO, personaVO);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }
}
